package com.cms.beans;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Collections;
import java.util.Map;
import java.util.WeakHashMap;

/**
 * @author xmrzh
 *
 */
public abstract class BeanUtils {
	private static final Map unknownEditorTypes = Collections.synchronizedMap(new WeakHashMap());
	@SuppressWarnings("unchecked")
	public static <T> T deepclone(T src) throws RuntimeException {
	ByteArrayOutputStream memoryBuffer = new ByteArrayOutputStream();
	ObjectOutputStream out = null;
	ObjectInputStream in = null;
	T dist = null;
	try {
	out = new ObjectOutputStream(memoryBuffer);
	out.writeObject(src);
	out.flush();
	in = new ObjectInputStream(new ByteArrayInputStream(memoryBuffer.toByteArray()));
	dist = (T) in.readObject();
	} catch (Exception e) {
	throw new RuntimeException(e);
	} finally {
	if (out != null)
	try {
	out.close();
	out = null;
	} catch (IOException e) {
	throw new RuntimeException(e);
	}
	if (in != null)
	try {
	in.close();
	in = null;
	} catch (IOException e) {
	throw new RuntimeException(e);
	}
	}
	return dist;
	}
	
}
